package be.ipl.diavoloz.usecases;

import java.util.List;
import java.util.Map;

import javax.ejb.Local;
import javax.ejb.Remote;

import be.ipl.diavoloz.modele.Couleur;
import be.ipl.diavoloz.modele.De;
import be.ipl.diavoloz.modele.Demons;
import be.ipl.diavoloz.modele.Joueur;
import be.ipl.diavoloz.modele.Partie;
import be.ipl.diavoloz.modele.Tour;


@Remote
public interface GestionPartie {

	boolean creerUnePartie(String pseudo, String nom);

	boolean rejoindreUnePartie(String pseudo, Partie partie);

	List<Partie> listerPartiesEnAttente();

	List<Partie> listerPartiesTerminer();

	Partie rechercherPartieViaId(int id);

	Partie rechercherPartieViaNom(String nom);

	List<String> listerJoueurs(Partie partie);

	Partie commencerPartie(Partie partie);

	int mesPoints(String pseudo, Partie partie);

	Partie terminerPartie(Partie partie);

	Tour nouveauTour(Partie partie);

	Demons rechercherDemon(int id);

	Partie rechargerPartie(Partie p);

	Map<Joueur, Integer> listerPointsJoueurs(Partie partie);

	List<Demons> listerDemonsTour(Tour tour);

	List<De> listerDesTour(Tour tour);

	String recupererDeOrdre(Tour tour);


	boolean prendreDemon(Partie p, Tour tour, Demons demon, String pseudo);

	void terminerLeTour(Tour tour);

	Joueur getGagnant(Partie partie);

}
